// var a = 10
// var b = 20
// b = a + b // b === 30
// a = b - a // a === 30 - 10 => 20
// b = b - a // b === 30 - 20 => 10
// console.log(a)
// console.log(b)
// var a1
// a1()
// var a1 = function() {}

// function a2() {}
// console.log(NaN == NaN)
// console.log('123' - 1)
// console.log('123' + 1)

// const o = {}
// o instanceof Object
// console.log(arr instanceof Object)
// console.log(Array.isArray(arr))
// const arr = {}
// console.log(Object.prototype.toString.call(arr))

// 自增自减 单独使用 前置 后置没有任何区分
// let a = 1
// a++
// ++a
// console.log(a)

// for (let i = 0; i < 4; ++i) {}
// ||  &&
// 小括号 => 一元运算符 => 算数运算符 => 关系运算符 => 相等运算符 => 逻辑运算符 => 赋值
// switch (变量) {
//   case '1':
//     // 代码
//     break;
//   case '2':
//     // 代码
//     break;
//   case '3':
//     // 代码
//     break;
//   default
//     //代码
// }
// console.log(Math.max.call(null, 1, 2, 3))
// console.log(Math.max.apply(null, [1, 2, 3]))
// const arr = [11, 12, 13, 12, 11, 14]
// arr.splice(1, 1)
// arr.splice(2, 0, 'zs')
// console.log(arr)
// const arr = [11, 12, 13, 12, 11, 14]
// const newArr = []
// for (let i = 0; i < arr.length; i++) {
//   // 每一次遍历arr值, 都去newArr查有没有相同的, 有相同的就不push
//   // if (!newArr.includes(arr[i])) {
//   //   newArr.push(arr[i]) // [11, 12, 13, 14]
//   // }
//   if (newArr.indexOf(arr[i]) === -1) {
//     newArr.push(arr[i])
//   }
// }
// console.log(newArr)
// const res = new Set(arr) // 返回具有唯一的值的数据  伪数组   场景: 存储搜索记录
// console.log(Array.from(res))
// const newArr = {
//   0: 'zs',
//   1: 'ls',
//   length: 2
// }
// for (let i = 0; i < newArr.length; i++) {
//   console.log(newArr[i])
// }
// const arr = [8, 5, 4, 2, 1] // 从小到大排
// // 第一次循环
// for (let i = 0; i < 4; i++) {
//   // 核心算法
//   // 前一项和后一项比较, 从小到大排, 前一项比后一项大, 就交换两个变量的值
//   if (arr[i] > arr[i + 1]) {
//     // 交换位置
//     let temp = null
//     temp = arr[i]
//     arr[i] = arr[i + 1]
//     arr[i + 1] = temp
//   }
// }
// // 第二次循环
// for (let i = 0; i < 3; i++) {
//   // 核心算法
//   // 前一项和后一项比较, 从小到大排, 前一项比后一项大, 就交换两个变量的值
//   if (arr[i] > arr[i + 1]) {
//     // 交换位置
//     let temp = null
//     temp = arr[i]
//     arr[i] = arr[i + 1]
//     arr[i + 1] = temp
//   }
// }
// // 第三次循环
// for (let i = 0; i < 2; i++) {
//   // 核心算法
//   // 前一项和后一项比较, 从小到大排, 前一项比后一项大, 就交换两个变量的值
//   if (arr[i] > arr[i + 1]) {
//     // 交换位置
//     let temp = null
//     temp = arr[i]
//     arr[i] = arr[i + 1]
//     arr[i + 1] = temp
//   }
// }
// // 第四次循环
// for (let i = 0; i < 1; i++) {
//   // 核心算法
//   // 前一项和后一项比较, 从小到大排, 前一项比后一项大, 就交换两个变量的值
//   if (arr[i] > arr[i + 1]) {
//     // 交换位置
//     let temp = null
//     temp = arr[i]
//     arr[i] = arr[i + 1]
//     arr[i + 1] = temp
//   }
// }
// console.log(arr)

// // 让整个for循环4次
// for (let j = 0; j < arr.length - 1; j++) {
//   for (let i = 0; i < arr.length - 1 - j; i++) {
//     // 核心算法
//     // 前一项和后一项比较, 从小到大排, 前一项比后一项大, 就交换两个变量的值
//     if (arr[i] > arr[i + 1]) {
//       // 交换位置
//       let temp = null
//       temp = arr[i]
//       arr[i] = arr[i + 1]
//       arr[i + 1] = temp
//     }
//   }
// }
// 函数分类
// 声明式函数  function fn() {}  常用来封装方法
// 函数表达式  const fn = function () {}  注册事件
// 匿名函数  function () {} ===> 箭头函数  () => {}  回调函数
// 立即执行函数  ;(function() {})() 形成自己的作用域, 防止变量名污染  模块化开发, 就不用立即执行函数

// function fn(b, c) {

// }
// fn(1, 2, 3)
